package models

import (
	"time"
)

// Interest 表：存储系统内可供选择的兴趣标签。
// 表名：interest
type Interest struct {
	Id        uint64    `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Name      string    `gorm:"column:name;type:varchar(50);uniqueIndex;not null;comment:兴趣名称;" json:"name"`
	Sort      int32     `gorm:"column:sort;type:int;default:0;comment:排序;" json:"sort"` // Sort 展示排序值，越小越靠前
	CreatedAt time.Time `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt time.Time `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

// TableName 返回 Interest 对应的数据库表名："interest"
func (Interest) TableName() string { return "interest" }

// UserInterest 表：用户与兴趣的多对多关系表。
type UserInterest struct {
	Id         uint64 `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	UserId     uint64 `gorm:"column:user_id;type:bigint UNSIGNED;index;not null;" json:"user_id"`
	InterestId uint64 `gorm:"column:interest_id;type:bigint UNSIGNED;index;not null;" json:"interest_id"` // InterestId 关联的兴趣ID
	// Status 是否展示：1-展示 0-隐藏（默认展示）
	Status    int8      `gorm:"column:status;type:tinyint(1);default:1;comment:是否展示 1-展示 0-隐藏;" json:"status"`
	CreatedAt time.Time `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
}

// TableName 返回 UserInterest 对应的数据库表名："user_interest"
func (UserInterest) TableName() string {
	return "user_interest"
}
